import os
import sys

# 将项目根目录添加到 PYTHONPATH
project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
if project_root not in sys.path:
    sys.path.append(project_root)

from rag.evaluator.evaluator import Evaluator
from rag.evaluator.evaluation_data import EvaluationData
from rag.config.config import Config
from rag.evaluator.metrics import (
    F1_Score, Recall_Score, Precision_Score, ExactMatch,Retrieval_Recall,Retrieval_Precision,
    BLEU, Rouge_1, Rouge_2, Rouge_L, LLMJudge, CountToken
)


config_dict = {
        "dataset_name": "example_dataset",
        "save_dir": "examples/results"
}


def run_evaluation(data):

    # 初始化评估器配置
    config = Config(None,config_dict)

    # 创建评估器实例
    evaluator = Evaluator(config)

    # 调用 Evaluator 执行评估
    results = evaluator.evaluate(data)

    return results

# 示例使用
if __name__ == "__main__":
 
    # 测试数据
    # 确保测试数据完整性
    # 确保数据与预期对齐

    retrieval_results=[
            [{"id":1,"contents":"根据《中华人民共和国反倾销条例》，商务部决定自2013年12月17日起对原产于欧盟、日本和美国的高温承压用合金钢无缝钢管实施临时反倾销措施。海关将对这些产品（税则号列：73045110、73045190、73045910和73045990）除征收关税和增值税外，还将按不同供货商的适用比率征收反倾销保证金及进口环节增值税保证金。进口经营单位需准确申报原产地并提交相关证明文件，无法确定原产地或无法提供原生产厂商发票的，将按最高反倾销保证金比率征收。对于加工贸易保税进口的产品，海关将按相关规定执行。最终处理办法将根据终裁结果另行公告。"},
            {"id":2,"contents":"another"}],
            [{"id":3,"contents":"周三会下雨"},
            {"id":4,"contents":"周三是阴天"}],
            [{"id":5,"contents":"为加强进出境及境内承运海关监管货物的水运和空运运输工具实际监管，便利其进出境，依据《海关法》和《进出境运输工具监管办法》，决定增加和调整相关申报电子数据格式，涵盖水运和空运运输工具的备案、预报、确报、动态、单证、供退物料、删改申请等数据项，详见附件1-20。本公告自2014年2月1日起实施，2008年第80号公告同时废止。"},
            {"id":6,"contents":"为加强海关实际监管效能，保证国家税款应收尽收，根据《中华人民共和国海关进出境运输工具舱单管理办法》（海关总署令第172号）的规定，决定调整进出境水运和空运运输工具货运舱单等电子数据格式，包括《原始舱单数据项》（见附件1）、《理货报告数据项》和《分拨货物、物品理货报告数据项》（见附件2）、《分拨货物、物品申请数据项》和《疏港分流申请数据项》（见附件3）、《运抵报告数据项》和《疏港分流货物、物品运抵报告数据项》（见附件4）、《装箱清单数据项》（见附件5）、《预配舱单数据项》（见附件6）、《装载舱单数据项》（见附件7），并新增部分数据格式，包括《出口落装申请数据项》（见附件8）、《出口落装改配申请数据项》（见附件9）、《出口直接改配申请数据项》（见附件10）、《进口改靠港申请数据项》（见附件11）、《国际转运准单数据项》（见附件12）和《空集装箱调运申请数据项》（见附件13），现予以公布。本公告内容自2011年1月1日起执行。海关总署公告2008年第54号同时废止。特此公告。"}],
            [{"id":7,"contents":"2004年，国务院关税税则委员会决定对原产于日本、美国、伊朗、马来西亚、台湾地区和墨西哥的进口乙醇胺征收反倾销税，征税时间自2004年11月14日起，期限为5年。2009年11月14日，商务部决定对原产于日本、美国、马来西亚和台湾地区的进口乙醇胺所适用的反倾销措施进行期终复审调查，同时终止对原产于伊朗、墨西哥的进口乙醇胺所适用的反倾销措施。根据期终复审调查结果，国务院关税税则委员会决定自2010年11月14日起对原产于日本、美国、马来西亚和台湾地区的进口乙醇胺继续征收反倾销税，期限为5年。现就有关事项公告如下：自2010年11月14日起，海关对申报进口原产于日本、美国、马来西亚和台湾地区的乙醇胺（2010年税则号列：29221110、29221190和29221200），继续按照海关总署2004年第36号公告、2008年第7号公告和2009年第89号公告的相关规定征收反倾销税。特此公告。二○一○年十一月十二日"},
             {"id":8,"contents":"根据《中华人民共和国反倾销条例》的规定，国务院关税税则委员会决定自2006年4月8日起对原产于日本和韩国的进口不锈钢冷轧薄板继续征收反倾销税，期限为5年。"},
             {"id":9,"contents":"根据《中华人民共和国反倾销条例》，国务院关税税则委员会决定自2010年9月27日起对原产于美国的进口白羽肉鸡产品（税则号列：02071100至02071429和05040021）征收反倾销税，期限5年。商务部发布2010年第51号公告。进口商需按不同供货商的适用税率和公式计算反倾销税及增值税。进口时须提交原产地证明，若无法确定非美国原产地，按最高税率征税；若能确定为美国原产但无法提供生产厂商发票，按其他美国公司适用税率征税。加工贸易保税进口相关产品按海关总署令第111号和2001年第9号公告执行。临时反倾销措施后的保证金按公告规定转为反倾销税及增值税，超出部分可申请退还，不足部分不补征。"}]
    ]
    
    data = EvaluationData(
        pred=["中华人民共和国反倾销条例", "周三会下雨","决定增加和调整相关申报电子数据格式，涵盖水运和空运运输工具的备案","国务院关税税则委员会"],
        golden_answers=[
            ["中华人民共和国反倾销条例"],
            ["周三是阴天"],
            ["调整相关申报电子数据格式，涵盖水运和空运运输工具的备案"],
            ["关税税则委员会"]
        ],
        retrieval_result=retrieval_results
    )

    # 调用评估接口
    scores = run_evaluation(data)

    # 打印结果
    print(scores)